\section{ldconfig}\index{ldconfig}
\begin{table}[!ht]
\centering
    \begin{tabular}{m{0.3\textwidth}m{0.7\textwidth}}
\toprule
\textbf{选项} & \textbf{含义}\\
\midrule
  -v                        &显示扫描的每个目录和目录的动态链接库\\
  -c, --format=FORMAT       & 采用的格式：新、旧或兼容(默认)\\
  -C CACHE                        & 将用户指定的缓存文件替换系统默认的缓存文件/etc/ld.so.cache\\
  -f CONF                         & 将 用户自定义的配置文件作为配置而不是/etc/ld.so.config\\
  -i, --ignore-aux-cache          & 忽略辅助缓存文件\\
  -l                              & 手工连接独立的库。\\
  -n                              & 处理命令行给定的目录，不对系统默认的目录/lib,/usr/lib进行扫描，也不会对配置文件中指定的目录扫描，未创建缓冲区。\\
  -N                              & 不要创建缓冲区\\
  -p, --print-cache               & 打印缓冲区\\
  -r ROOT                         & 进入 ROOT 目录并将其作为根目录\\
  -v, --verbose                   & 生成详细消息\\
  -X                              & Don't update symbolic links\\
  -?, --help                      & 给出此帮助列表\\
      --usage                     & 给出简要的用法信息\\
  -V, --version                   & 打印程序版本号\\

\bottomrule
\end{tabular}
\caption{ldconfig参数}
\end{table}
\textbf{例子1}\\*
将指定目录中的动态链接库放入系统的缓存/etc/ld.so.cache中使得其能被系统共享使用。
\begin{bash}
# 将当前目录project中的动态链接库加入系统
ldconfig ~/project
\end{bash}
\begin{exercise}
在运行上面的命令后，再次运行ldconfig而没有加参数，系统会将/lib,/usr/lib和/etc/ld.so.conf中指定目录中的动态库加入缓存，这时候上述代码中的动态库可能不被系统共享。
\end{exercise}
g++生成动态库
\begin{bash}
# 生成动态链接库libadd.so 
# -o生成目标t，-L后面加上生成动态库的目录，-l后添加动态库的名字
g++ -shared -Wl,-soname,libadd.so -o libadd.so add.cc 
# 将动态库添加到可执行文件t中
g++ -o t main.cc -L. -ladd 
\end{bash}
这时候运行通常提示:
\begin{bash}
./t: error while loading shared libraries: libadd.so: cannot open shared object file: No such file or directory
\end{bash}
这是由于运行时动态库没有找到造成的，解决方法有:
\begin{itemize}
\item[\S] 将动态库libadd.so文件目录添加到LD\_LIBRARY\_PATH环境变量中。
\item[\S] 使用ld-Linux.so.2加载程序\bashinline{/lib/ld-Linux.so.2 --library-path 路径 程序名}
\item[\S] ldconfig添加so文件所在的目录。
\end{itemize}
解决方案1:\\*
\bashinline{export LD_LIBRARY_PATH=}

解决方案2:\\*
\bashinline{/lib/ld_Linux.so.2 --library-path /home/liushuai/linux/cxxcode/ t（没有成功）}

解决方案3:\\*
\bashinline{sudo ldconfig /home/liushuai/linux/cxxcode}

\emph{如果系统的搜索路径下同时存在静态链接库和动态链接库，默认情况下会连接动态链接库。如果需要强制连接静态链接库需要加上"-static"选项}

\bashinline{gcc -o t main.cc -static -ladd}
